package MySQL;

import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;

public class TestJDBC {
    public static void main(String[] args) throws SQLException {
        Scanner scanner = new Scanner(System.in);

        //向上转型
        DataSource dataSource = new MysqlDataSource();
        //向下转型
        //设置数据库的所在地址
        ((MysqlDataSource) dataSource).setURL("jdbc:mysql://127.0.0.1:3306/student?characterEncoding=utf8&useSSL=false");
        //设置登录数据库的用户名
        ((MysqlDataSource) dataSource).setUser("root");
        //设置登录数据库的密码
        ((MysqlDataSource) dataSource).setPassword("123456");

        //2、让代码和数据库服务建立连接  并且得到连接对象     (相当于到达菜鸟驿站)
        Connection connection = dataSource.getConnection();//在main方法开头加throws

        //2.5 让用户通过控制台输入一个待插入的数据
        System.out.println("请输入学号:");
        int id = scanner.nextInt();
        System.out.println("请输入姓名:");
        String name = scanner.next();

        //3、操作数据库,以插入数据为例
        //     关键所在就是构造一个SQL语句
        //       在JDBC  中构造的SQL,不必带上;
        //   只在命令行中来区分不同语句,现在直接在代码中操作
        String sql = "insert into test values(?,?)";
        //此处只是一个String 类型还不够  需要把这个Stying包装成一个 "语句对象"
        PreparedStatement statement = connection.prepareStatement(sql);

        //这里进行替换  (上面的?)
        statement.setInt(1,id);
        statement.setString(2,name);
        System.out.println("statement:"  +statement);

        //4、执行  SQL  (相当于扫码取件)

        //   SQL里面如果是 insert,update,delete,都是用 executeUpdate 方法;
        //   SQL里面如果是 select,则使用executeQuery 方法;
        //   返回值表示这个操作,影响到了几行, 就相当于控制台里输入 sql 之后,得到的数字

        int ret = statement.executeUpdate();
        System.out.println(ret);

        // 5、此时 SQL已经执行完毕,然后还需要释放资源,
        statement.close();
        connection.close();

    }
}
